package com.sybil.ot.dao;

import com.sybil.ot.dominio.Flujo;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

@Repository("flujoDAO")
public class FlujoDAO extends AbstractDAO<Flujo, String> {

   public FlujoDAO() {
      super(Flujo.class);
   }

   public Flujo obtenerFlujo(String clave) {
      return obtener(clave);
   }

   public List<Flujo> obtenerFlujos(boolean activos) {
      if (activos) {
         return obtener(Restrictions.eq("estatus", "A"));
      } else {
         return obtener();
      }
   }

   public List<Flujo> obtenerFlujosUsuario(String usuario) {
      Criteria c = sesionActual().createCriteria(Flujo.class, "fluj");
      c.createAlias("fluj.pasos", "pasos");
      c.createAlias("pasos.responsablesPaso", "resp");
      c.add(Restrictions.eq("resp.usuario.clave", usuario));
      return c.list();
   }

   public void guardarFlujo(Flujo flujo) {
      guardar(flujo);
   }

   public void editarFlujo(Flujo flujo) {
      editar(flujo);
   }

   public void eliminarFlujo(Flujo flujo) {
      eliminar(flujo);
   }
}
